COO Communities

The primary geographic unit of this assessment is the census tract. As is the case with many communities, the census geographies do not coincide exactly with the formal geographic boundary of the study’s three sites, and should be considered as spatial approximations of these communities.

Listed below are the geographic identifiers of the census tracts that approximate each site.

Rainier Valley
(2009)
Rainier Valley
(2015)
White Center
(2009)
White Center
(2015)
SeaTac/Tukwila
(2009)
SeaTac/Tukwila
(2015)
53033010000 53033010001 53033026900 53033026600 53033026100 53033026200
53033010300 53033010300 53033026500 53033026700 53033026200 53033027300
53033010400 53033010401 53033026600 53033026500 53033026300 53033028000
53033011000 53033011001 53033026700 53033026801 53033026400 53033028100
53033011101 53033011002 53033026801 53033026802 53033027100 53033028300
53033011102 53033011101 53033026802 53033027000 53033027200 53033028402
53033011700 53033011102 53033027000 NA 53033027300 53033028403
53033011800 53033011700 NA NA 53033028000 53033028500
53033011900 53033011800 NA NA 53033028100 53033028700
NA 53033011900 NA NA 53033028200 53033028801
NA NA NA NA 53033028300 53033028802
NA NA NA NA 53033028402 53033029101
NA NA NA NA 53033028403 53033026100
NA NA NA NA 53033028500 53033026200
NA NA NA NA 53033028700 53033026300
NA NA NA NA 53033028801 53033026400
NA NA NA NA 53033028802 53033027100
NA NA NA NA 53033029100 53033027200
NA NA NA NA NA 53033027300
NA NA NA NA NA 53033028100
NA NA NA NA NA 53033028200
NA NA NA NA NA 53033028300
NA NA NA NA NA 53033028802

To create the community approximations, the tract boundaries of each community are merged and each of the census table estimates are aggregated. In addition to combining the estimates, this method also recalculates the standard error for each census table. It should be noted that this method is only valid for census tables representing count data.1

Simple feature collection with 403 features and 180 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -122.5279 ymin: 47.08446 xmax: -121.0657 ymax: 47.78033
epsg (SRID):    NA
proj4string:    NA

Community Maps


  1. This limitation is made explicit by the acs package creator, Ezra Haber Glenn, here.

LS0tDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogIHBkZl9kb2N1bWVudDoNCiAgICBrZWVwX3RleDogeWVzDQphbHdheXNfYWxsb3dfaHRtbDogeWVzDQotLS0NCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1zZXR1cCwgZWNobyA9IEZBTFNFLCB3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsY29tbWVudD1GQUxTRX0NCmxpYnJhcnkocGx5cikNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHJwcm9qcm9vdCkNCmxpYnJhcnkocmdkYWwpDQpsaWJyYXJ5KHNwKQ0KbGlicmFyeShyZ2VvcykNCmxpYnJhcnkodGlncmlzKQ0KbGlicmFyeShsZWFmbGV0KQ0KbGlicmFyeShnZ3RoZW1lcykNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KGRvd25sb2FkZXIpDQpsaWJyYXJ5KHdlYnNob3QpDQpsaWJyYXJ5KGh0bWx0b29scykNCmxpYnJhcnkoZ3Bsb3RzKQ0KbGlicmFyeShnZ21hcCkNCmxpYnJhcnkoc2hpbnkpDQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGFjcykNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGZvcmNhdHMpDQpsaWJyYXJ5KG1pc2NnaXMpDQpsaWJyYXJ5KG9wZXJhdG9yLnRvb2xzKQ0KbGlicmFyeShsZWFmbGV0LmV4dHJhcykNCmxpYnJhcnkodmlyaWRpc0xpdGUpDQpsaWJyYXJ5KHNmKQ0Kcm9vdCA8LSBycHJvanJvb3Q6OmlzX3JzdHVkaW9fcHJvamVjdA0Kcm9vdF9maWxlIDwtIHJvb3QkbWFrZV9maXhfZmlsZSgpDQpvcHRzX2NodW5rJHNldChlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBjb21tZW50PUZBTFNFKQ0KDQpgYGANCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1jb2xvcnN9DQpncmVlbiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJncmVlbiJdXQ0KYmx1ZSA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJibHVlIl1dDQpvcmFuZ2UgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sib3JhbmdlIl1dDQpyZWQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sicmVkIl1dDQp0ZWFsIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbInRlYWwiXV0NCnBhbF9yZ2JfNCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIsIm9yYW5nZSIsInB1cnBsZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnBhbF9yZ2JfNiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIsIm9yYW5nZSIsInB1cnBsZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkNCnByb2pfbGlnaHRfZ3JleSA8LSBjb2wyaGV4KCJncmV5NzUiKQ0KcHJval9ncmV5IDwtIGNvbDJoZXgoImdyZXk1MCIpDQpwcm9qX2RhcmtfZ3JleSA8LSBjb2wyaGV4KCJncmV5MjUiKQ0KDQpgYGANCg0KDQojIyMgQ09PIENvbW11bml0aWVzIHstfQ0KDQpUaGUgcHJpbWFyeSBnZW9ncmFwaGljIHVuaXQgb2YgdGhpcyBhc3Nlc3NtZW50IGlzIHRoZSBbY2Vuc3VzIHRyYWN0XShodHRwczovL3d3dy5jZW5zdXMuZ292L2dlby9yZWZlcmVuY2UvZ3RjL2d0Y19jdC5odG1sKS4gQXMgaXMgdGhlIGNhc2Ugd2l0aCBtYW55IGNvbW11bml0aWVzLCB0aGUgY2Vuc3VzIGdlb2dyYXBoaWVzIGRvIG5vdCBjb2luY2lkZSBleGFjdGx5IHdpdGggdGhlIGZvcm1hbCBnZW9ncmFwaGljIGJvdW5kYXJ5IG9mIHRoZSBzdHVkeSdzIHRocmVlIHNpdGVzLCBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgX3NwYXRpYWwgYXBwcm94aW1hdGlvbnNfIG9mIHRoZXNlIGNvbW11bml0aWVzLg0KDQpMaXN0ZWQgYmVsb3cgYXJlIHRoZSBnZW9ncmFwaGljIGlkZW50aWZpZXJzIG9mIHRoZSBjZW5zdXMgdHJhY3RzIHRoYXQgYXBwcm94aW1hdGUgZWFjaCBzaXRlLg0KDQpgYGB7ciBjZW5zdXMtYWNzLWNvbW1zLWZpbGVzLCByZXN1bHRzPSJhc2lzIn0NCg0KIyBDZW5zdXMgdHJhY3QgYm91bmRhcmllcyBmb3IgdGhlIDIwMTUgZGF0YQ0KDQojIFJhaW5pZXIgVmFsbGV5DQpydiA8LSBjKCI1MzAzMzAxMDAwMSIsICI1MzAzMzAxMDMwMCIsICI1MzAzMzAxMDQwMSIsICI1MzAzMzAxMTAwMSIsICI1MzAzMzAxMTAwMiIsICI1MzAzMzAxMTEwMSIsIjUzMDMzMDExMTAyIiwgIjUzMDMzMDExNzAwIiwgIjUzMDMzMDExODAwIiwgIjUzMDMzMDExOTAwIikNCg0KIyBXaGl0ZSBDZW50ZXINCndjIDwtIGMoIjUzMDMzMDI2NjAwIiwiNTMwMzMwMjY3MDAiLCI1MzAzMzAyNjUwMCIsIjUzMDMzMDI2ODAxIiwiNTMwMzMwMjY4MDIiLCI1MzAzMzAyNzAwMCIpDQoNCiMgU2VhVGFjL1R1a3dpbGENCg0Kc3RjX2h1cyA8LSByZWFkX2Nzdihyb290X2ZpbGUoJzEtZGF0YS8zLWV4dGVybmFsL21hbnVhbC9zZWF0YWMtdHIvREVDXzEwX1NGMV9IMS9ERUNfMTBfU0YxX0gxX3dpdGhfYW5uLmNzdicpLCANCiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyhJZDIgPSBjb2xfY2hhcmFjdGVyKCkpLCBza2lwID0gMSkNCg0KdHVrX2h1cyA8LSByZWFkX2Nzdihyb290X2ZpbGUoJzEtZGF0YS8zLWV4dGVybmFsL21hbnVhbC90dWt3aWxhLXRyL0RFQ18xMF9TRjFfSDEvREVDXzEwX1NGMV9IMV93aXRoX2Fubi5jc3YnKSwgDQogICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoSWQyID0gY29sX2NoYXJhY3RlcigpKSwgDQogICAgICAgICAgICAgICAgICAgIHNraXAgPSAxKQ0KDQpzdGMgPC0gIHBhc3RlKHN1YnN0cih4ID0gc3RjX2h1cyRJZDIsMSwyKSxzdWJzdHIoeCA9IHN0Y19odXMkSWQyLDgsMTYpLHNlcCA9ICIiKQ0KDQp0dWsgPC0gIHBhc3RlKHN1YnN0cih4ID0gdHVrX2h1cyRJZDIsMSwyKSxzdWJzdHIoeCA9IHR1a19odXMkSWQyLDgsMTYpLHNlcCA9ICIiKQ0KDQpzdGN0dWsgPC0gYyhzdGMsdHVrKQ0KDQojIENlbnN1cyB0cmFjdCBib3VuZGFyaWVzIGZvciB0aGUgMjAwOSBkYXRhDQoNCmlmKCFleGlzdHMoJ2N3Jykpe2N3IDwtIHJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jdy0yMDAwLTIwMTAucmRzJykpfQ0KDQpnZXRfR0VPSUQyMDA5IDwtIGZ1bmN0aW9uKGdlb2lkc18yMDE1LCBjdyl7DQogICAgICAgICMgYnJvd3NlcigpDQogICAgICAgIGN3ICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPSURfMjAxMCAlaW4lIGdlb2lkc18yMDE1KSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKFdFSUdIVCA+IC4wMSkgJT4lDQogICAgICAgICAgICAgICAgZXh0cmFjdDIoJ0dFT0lEXzIwMDAnKSAlPiUgdW5pcXVlKCkNCn0NCg0KaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkpew0KICAgICAgICBsaXN0KA0KICAgICAgICAgICAgICAgICdSVl8yMDA5JyA9IGdldF9HRU9JRDIwMDkocnYsY3cpLA0KICAgICAgICAgICAgICAgICdSVl8yMDE1JyA9IHJ2LA0KICAgICAgICAgICAgICAgICdXQ18yMDA5JyA9IGdldF9HRU9JRDIwMDkod2MsY3cpLA0KICAgICAgICAgICAgICAgICdXQ18yMDE1JyA9IHdjLA0KICAgICAgICAgICAgICAgICdTVEtXXzIwMDknID0gZ2V0X0dFT0lEMjAwOShzdGN0dWssY3cpLA0KICAgICAgICAgICAgICAgICdTVEtXXzIwMTUnID0gc3RjdHVrDQogICAgICAgICkgJT4lIA0KICAgICAgICAgICAgICAgIG1pc2NnaXM6OmNiaW5kX2ZpbGwoLikgJT4lDQogICAgICAgICAgICAgICAgYXNfdGliYmxlKCkgJT4lDQogICAgICAgICAgICAgICAgc2V0X2NvbG5hbWVzKA0KICAgICAgICAgICAgICAgICAgICAgICAgYygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhaW5pZXIgVmFsbGV5PGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWluaWVyIFZhbGxleTxicj4oMjAxNSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGUgQ2VudGVyPGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSBDZW50ZXI8YnI+KDIwMTUpIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYVRhYy9UdWt3aWxhPGJyPigyMDA5KSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWFUYWMvVHVrd2lsYTxicj4oMjAxNSkiDQogICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgKSAlPiUgDQogICAgICAgICAgICAgICAgd3JpdGVfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkNCn0NCg0KcmVhZF9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL2Nvby1jb21tLXRyLWRmLnJkcycpKSAlPiUgDQogICAgICAgIGtuaXRyOjprYWJsZShjYXB0aW9uID0gIkNlbnN1cyBUcmFjdCBHRU9JRHMiKQ0KDQpgYGANCg0KVG8gY3JlYXRlIHRoZSBjb21tdW5pdHkgYXBwcm94aW1hdGlvbnMsIHRoZSB0cmFjdCBib3VuZGFyaWVzIG9mIGVhY2ggY29tbXVuaXR5IGFyZSBtZXJnZWQgYW5kIGVhY2ggb2YgdGhlIGNlbnN1cyB0YWJsZSBlc3RpbWF0ZXMgYXJlIGFnZ3JlZ2F0ZWQuIEluIGFkZGl0aW9uIHRvIGNvbWJpbmluZyB0aGUgZXN0aW1hdGVzLCB0aGlzIG1ldGhvZCBhbHNvIHJlY2FsY3VsYXRlcyB0aGUgc3RhbmRhcmQgZXJyb3IgZm9yIGVhY2ggY2Vuc3VzIHRhYmxlLiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGlzIG1ldGhvZCBpcyBvbmx5IHZhbGlkIGZvciBjZW5zdXMgdGFibGVzIHJlcHJlc2VudGluZyBjb3VudCBkYXRhLl5bVGhpcyBsaW1pdGF0aW9uIGlzIG1hZGUgZXhwbGljaXQgYnkgdGhlIGBhY3NgIHBhY2thZ2UgY3JlYXRvciwgRXpyYSBIYWJlciBHbGVubiwgW2hlcmVdKGh0dHA6Ly9lZ2xlbm4uc2NyaXB0cy5taXQuZWR1L2NpdHlzdGF0ZS8pLl0NCg0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1jb21iaW5lZC1nZW9tc30NCg0KaWYoIWV4aXN0cygnYWNzX25vcm1sX3NmJykpe2Fjc19ub3JtbF9zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9jb28tYWNzLW5vcm1sLXNmLnJkcycpKX0NCg0KIyBOZXcgY29sdW1uczogYENPTU1VTklUWWAgYW5kIGBDT01NTVVOSVRZX0ZVTExgDQoNCnJ2NiA8LSBtYXBfY2hyKHJ2LHN0cl9zdWIsNiwxMSkNCg0Kd2M2IDwtIG1hcF9jaHIod2Msc3RyX3N1Yiw2LDExKQ0KDQpzdGN0dWs2IDwtIG1hcF9jaHIoc3RjdHVrLHN0cl9zdWIsNiwxMSkNCg0KY29vNiA8LSBjKHJ2Nix3YzYsc3RjdHVrNikNCg0KIyBBZ2dyZWdhdGlvbiBmdW5jdGlvbg0KYWdncmVnYXRlX2NvbW1zIDwtIGZ1bmN0aW9uKGNvbCl7DQogICAgICAgIA0KICAgICAgICBjbGFzcyA8LSBjb2wgJT4lIGNsYXNzKCkgJT4lIHVuaXF1ZSAlPiUgZXh0cmFjdDIoMSkNCiAgICAgICAgDQogICAgICAgICMgQ0hBUkFDVEVSIENPTFVNTlMNCiAgICAgICAgaWYoY2xhc3MgJWluJSAnY2hhcmFjdGVyJyl7TkFfY2hhcmFjdGVyXw0KICAgICAgICB9ZWxzZSANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAjIExPR0lDQUwgQ09MVU1OUyANCiAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdsb2dpY2FsJyl7IE5BDQogICAgICAgICAgICAgICAgfWVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgIyBTRkMgQ09MVU1OUyANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsYXNzICVpbiUgJ3NmY19NVUxUSVBPTFlHT04nKXsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCAlPiUgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfdW5pb24gJT4lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfY2FzdCgnTVVMVElQT0xZR09OJykgJT4lIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0X2J1ZmZlciguMDAwMDAxKSAlPiUgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfY2FzdCgnTVVMVElQT0xZR09OJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFDUyBDT0xVTU5TDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNsYXNzICVpbiUgJ2xpc3QnICYgZXh0cmFjdDIoY29sLDEpICU+JSBjbGFzcyAlaW4lICdhY3MnKXsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sICU+JSByZWR1Y2Uoc3VwcHJlc3NXYXJuaW5ncyhyYmluZC5hY3MpKSAlPiUgYXBwbHkoMSxzdW0pICU+JSBsaXN0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCn0NCg0KaWYoIWZpbGUuZXhpc3RzKHJvb3RfZmlsZSgnLi8xLWRhdGEvNC1pbnRlcmltL2Fjc19ub3JtbF9hbGxfZ2VvbXNfc2YucmRzJykpKXsNCiAgICAgICAgDQogICAgICAgIGFjc19ub3JtbF9jb21tc19zZiA8LSANCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfc2YgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShDT01NVU5JVFlfRlVMTCA9IGNhc2Vfd2hlbiguJEdFT0lENiAlaW4lIHJ2NiB+ICdSYWluaWVyIFZhbGxleScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgd2M2IH4gJ1doaXRlIENlbnRlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgc3RjdHVrNiB+ICdTZWFUYWMvVHVrd2lsYScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSwNCiAgICAgICAgICAgICAgICAgICAgICAgQ09NTVVOSVRZID0gY2FzZV93aGVuKC4kR0VPSUQ2ICVpbiUgcnY2IH4gJ1JWJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgd2M2IH4gJ1dDJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgc3RjdHVrNiB+ICdTVEtXJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChOQU1FLE5BTUVfRlVMTCxHRU9JRDYsQ09NTVVOSVRZX0ZVTEwsQ09NTVVOSVRZLGV2ZXJ5dGhpbmcoKSkgJT4lIA0KICAgICAgICAgICAgICAgIHVuZ3JvdXAgJT4lIA0KICAgICAgICAgICAgICAgIHN0X2FzX3NmKCkNCiAgICAgICAgDQogICAgICAgIGNvbW1zIDwtDQogICAgICAgICAgICAgICAgYWNzX25vcm1sX2NvbW1zX3NmICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoIWlzLm5hKENPTU1VTklUWSkpICU+JSANCiAgICAgICAgICAgICAgICB1bmNsYXNzICU+JSANCiAgICAgICAgICAgICAgICBhc190aWJibGUgJT4lIA0KICAgICAgICAgICAgICAgIHNsaWNlX3Jvd3MoJ0NPTU1VTklUWScpICU+JSANCiAgICAgICAgICAgICAgICBkbWFwKGFnZ3JlZ2F0ZV9jb21tcykgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShnZW9tZXRyeSA9IHN0X3NmYyhnZW9tZXRyeSkpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpDQogICAgICAgIA0KICAgICAgICBhbGxfY29vIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9jb21tc19zZiAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKCFpcy5uYShDT01NVU5JVFkpKSAlPiUgDQogICAgICAgICAgICAgICAgdW5jbGFzcyAlPiUgDQogICAgICAgICAgICAgICAgYXNfdGliYmxlICU+JSANCiAgICAgICAgICAgICAgICBkbWFwKGFnZ3JlZ2F0ZV9jb21tcykgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShnZW9tZXRyeSA9IHN0X3NmYyhnZW9tZXRyeSkpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpDQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmIDwtIA0KICAgICAgICAgICAgICAgIGxpc3QoYWNzX25vcm1sX2NvbW1zX3NmLCBjb21tcywgYWxsX2NvbykgJT4lIA0KICAgICAgICAgICAgICAgIHJlZHVjZShyYmluZC5zZikgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShHRU9HUkFQSFkgPSBjYXNlX3doZW4oaXMubmEoLiROQU1FKSAmICFpcy5uYSguJENPTU1VTklUWSkgfiAnY29tbXVuaXR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiBpcy5uYSguJENPTU1VTklUWSkgfiAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnU0VBQ0NEJyB+ICdjb3VudHkgc3ViZGl2aXNpb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ0tDJyB+ICdjb3VudHknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICd0cmFjdCcpKSAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKE5BTUUgPSBjYXNlX3doZW4oDQogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRHRU9HUkFQSFkgJWluJSAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScgfiAnQ09PJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdSVicgfiAuJENPTU1VTklUWSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdXQycgfiAuJENPTU1VTklUWSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdTVEtXJyB+IC4kQ09NTVVOSVRZLA0KICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4kTkFNRSkpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoTkFNRV9GVUxMID0gY2FzZV93aGVuKA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ0NPTycgfiAnQ29tbXVuaXRpZXMgb2YgT3Bwb3J0dW5pdHknLA0KICAgICAgICAgICAgICAgICAgICAgICAgLiROQU1FICVpbiUgJ1JWJyB+ICdSYWluaWVyIFZhbGxleScsDQogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnV0MnIH4gJ1doaXRlIENlbnRlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnU1RLVycgfiAnU2VhVGFjL1R1a3dpbGEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IC4kTkFNRV9GVUxMKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShHRU9HX0ZDVCA9IGZhY3RvcihHRU9HUkFQSFksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoJ3RyYWN0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbXVuaXR5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdW50eSBzdWJkaXZpc2lvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdW50eScpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkID0gVFJVRSkpICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoU0VBQ0NEX0xHTCA9IGlmX2Vsc2UoTkFNRSAlaW4lIGMoJ1NFQUNDRCcsJ0NPTycsJ1JWJywnV0MnLCdTVEtXJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQUNDRF9MR0wpKSAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KE5BTUU6U0VBQ0NEX0xHTCxHRU9HUkFQSFksR0VPR19GQ1QsZ2VvbWV0cnksbWF0Y2hlcygnMjAxNScpLG1hdGNoZXMoJzIwMDknKSkgDQogICAgICAgIA0KICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSANCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vYWNzX25vcm1sX2FsbF9nZW9tc19zZi5yZHMnKSkNCiAgICAgICAgDQp9DQogICAgICAgIA0KYWNzX25vcm1sX2FsbF9nZW9tc19zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9hY3Nfbm9ybWxfYWxsX2dlb21zX3NmLnJkcycpKQ0KDQoNCmFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICBhcnJhbmdlKGZjdF9yZXYoR0VPR19GQ1QpKSAlPiUgDQogICAgICAgIHNlbGVjdChOQU1FOkdFT0dfRkNULGdlb21ldHJ5LG1hdGNoZXMoJzIwMTUnKSxtYXRjaGVzKCcyMDA5JykpICU+JSANCiAgICAgICAgc3RfYXNfc2YoKSAlPiUgDQogICAgICAgIHByaW50X3BhZ2VkX3NmDQoNCg0KYGBgDQoNCmBgYHtyIGNlbnN1cy1ub3QtYWNzLWFsbC1nZW9tc30NCiMgVGhpcyBzYXZlcyBhIHZlcnNpb24gb2YgdGhlIGFjcyBkYXRhIHRoYXQgZG9lcyBub3QgdXNlIGBhY3NgIGZvcm1hdA0KIyBUaGlzIHdpbGwgYmUgdXNlZnVsIGZvciBzdW1tYXJ5IHRhYmxlcyBhbmQgdmlzdWFsaXphdGlvbnMuDQoNCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJy4vMS1kYXRhLzUtdGlkeS9jb28tY2Vuc3VzLW5vdC1hY3MtYWxsLXNmLnJkcycpKSl7DQogICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHVuY2xhc3MgJT4lIA0KICAgICAgICAgICAgICAgIGFzX3RpYmJsZSgpICU+JSANCiAgICAgICAgICAgICAgICBnYXRoZXIoVEJMLEFDUyxtYXRjaGVzKCcyMDE1fDIwMDknKSkgJT4lIA0KICAgICAgICAgICAgICAgIG11dGF0ZShFU1QgPSBtYXBfZGJsKEFDUyxlc3RpbWF0ZSkgJT4lIHJvdW5kX2FueSgxKSAlPiUgYXMuaW50ZWdlcigpKSAlPiUgDQogICAgICAgICAgICAgICAgbXV0YXRlKFRZUEUgPSAnRVNUJykgJT4lIA0KICAgICAgICAgICAgICAgIHVuaXRlKFRCTF9FU1QsVEJMLFRZUEUsc2VwID0gJ18nKSAlPiUgDQogICAgICAgICAgICAgICAgc3ByZWFkKFRCTF9FU1QsRVNUKSAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KC1BQ1MpICU+JSANCiAgICAgICAgICAgICAgICBzdF9hc19zZigpICU+JSANCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS81LXRpZHkvY29vLWNlbnN1cy1ub3QtYWNzLWFsbC1zZi5yZHMnKSkNCn0NCmBgYA0KDQoNCg0KIyMjIyBDb21tdW5pdHkgTWFwcw0KYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1tYXAsIGZpZy5oZWlnaHQ9MS4yNSwgZmlnLndpZHRoPTEsICBmaWcuc2hvdz0naG9sZCcsIGRwaT0xNTB9DQoNCiMgUHJpbnQgQ29tbXVuaXR5IE1hcHMNCg0Kc2hvd19jb21tX21hcCA8LSBmdW5jdGlvbihubSwgY29sb3IsIGZsb2F0X2Rpcil7DQogICAgICAgIA0KICAgICAgICAjIE1hcCBDZW50ZXINCiAgICAgICAgDQogICAgICAgIHN0X2NlbnRyb2lkX3F0IDwtIHF1aWV0bHkoc3RfY2VudHJvaWQpDQogICAgICAgIA0KICAgICAgICBjbnRyIDwtIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScpICU+JSANCiAgICAgICAgICAgICAgICBzdF9iYm94KCkNCiAgICAgICAgaGFsZndheSA8LSBmdW5jdGlvbihtYXgsbWluKXsobWF4LW1pbikvMiArIG1pbn0NCiAgICAgICAgDQogICAgICAgIGxuZyA8LSBjbnRyW1sneG1pbiddXQ0KICAgICAgICBsYXQgPC0gaGFsZndheShjbnRyW1sneW1heCddXSxjbnRyW1sneW1pbiddXSkNCiAgICAgICAgDQogICAgICAgIGNvbW1fc3AgPC0gDQogICAgICAgICAgICAgICAgYWNzX25vcm1sX2FsbF9nZW9tc19zZiAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KGV2ZXJ5dGhpbmcoKSwtbWF0Y2hlcygnMjAxNXwyMDA5JykpICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPR1JBUEhZICVpbiUgJ3RyYWN0JyAmIENPTU1VTklUWSAlaW4lIG5tKSAlPiUgDQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWwiKQ0KICAgICAgICANCiAgICAgICAgY29tbV9jbnRfc3AgPC0gDQogICAgICAgICAgICAgICAgYWNzX25vcm1sX2FsbF9nZW9tc19zZiAlPiUgDQogICAgICAgICAgICAgICAgc2VsZWN0KGV2ZXJ5dGhpbmcoKSwtbWF0Y2hlcygnMjAxNXwyMDA5JykpICU+JSANCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPR1JBUEhZICVpbiUgJ2NvbW11bml0eScgJiBDT01NVU5JVFkgJWluJSBubSkgICU+JSANCiAgICAgICAgICAgICAgICBtdXRhdGUoZ2VvbWV0cnkgPSBzdF9jZW50cm9pZChnZW9tZXRyeSkpICU+JQ0KICAgICAgICAgICAgICAgIGFzKCJTcGF0aWFsIikNCiAgICAgICAgDQogICAgICAgIGNvbW1fYm91bmRzX3NwIDwtIA0KICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIA0KICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgDQogICAgICAgICAgICAgICAgZmlsdGVyKEdFT0dSQVBIWSAlaW4lICdjb21tdW5pdHknICYgQ09NTVVOSVRZICVpbiUgbm0pICAlPiUNCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbCIpICU+JSANCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbExpbmVzIikNCiAgICAgICAgDQogICAgICAgIG1hcCA8LSANCiAgICAgICAgICAgICAgICBjb21tX3NwICU+JSANCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpteUxmbHRHcmV5KCkgJT4lDQogICAgICAgICAgICAgICAgbXlMZmx0T3B0cyh0aWxlTGFiZWxzID0gRkFMU0UsIGZ1bGxTY3JlZW5CdG4gPSBGQUxTRSwgYnVtcFRpbGVMYWJlbHMgPSBGQUxTRSkgJT4lIA0KICAgICAgICAgICAgICAgIGFkZFBvbHlnb25zKHNtb290aEZhY3RvciA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2wyaGV4KCJ3aGl0ZSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodCA9IC41LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvciA9IGNvbG9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gLjY1DQogICAgICAgICAgICAgICAgKSAlPiUgDQogICAgICAgICAgICAgICAgYWRkUG9seWxpbmVzKGRhdGEgPSBjb21tX2JvdW5kc19zcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHkgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IHByb2pfZGFya19ncmV5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ID0gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21vb3RoRmFjdG9yID0gMCkgJT4lDQogICAgICAgICAgICAgICAgYWRkQXdlc29tZU1hcmtlcnMoZGF0YSA9IGNvbW1fY250X3NwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtYXJrZXJPcHRpb25zKG9wYWNpdHkgPSAwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IH4gTkFNRV9GVUxMLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9wdGlvbnMgPSBsYWJlbE9wdGlvbnMobm9IaWRlID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYygwLDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAnYXV0bycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0T25seSA9IFRSVUUpKSAlPiUgDQogICAgICAgICAgICAgICAgc2V0VmlldyhsbmcsbGF0LHpvb20gPSA5KSAlPiUgDQogICAgICAgICAgICAgICAgbWlzY2dpczo6c3R5bGVXaWRnZXQoc3R5bGUgPSBwYXN0ZTAoImZsb2F0OiIsZmxvYXRfZGlyLCI7bWFyZ2luOjFweDsiLCJ0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dGV4dC1zaGFkb3c6LTFweCAwICNGRkZGRkYsMCAxcHggI0ZGRkZGRiwxcHggMCAjRkZGRkZGLDAgLTFweCAjRkZGRkZGIikpIA0KDQogICAgICAgIHJldHVybihtYXApDQogICAgICAgIH0NCg0KbmFtZXMgPC0gYygnUlYnLCdXQycsJ1NUS1cnKQ0KDQpjb2xvcnMgPC0gYyhibHVlLCBncmVlbiwgcmVkKQ0KDQpmbG9hdF9kaXJzIDwtIGMoJ2xlZnQnLCdsZWZ0Jywnbm9uZScpDQoNCm1hcF9saXN0IDwtIHBtYXAobGlzdChuYW1lcywgY29sb3JzLCBmbG9hdF9kaXJzKSxzaG93X2NvbW1fbWFwKSANCg0KbWFwX2xpc3QgJT4lIGV4dHJhY3QyKDEpDQptYXBfbGlzdCAlPiUgZXh0cmFjdDIoMikNCm1hcF9saXN0ICU+JSBleHRyYWN0MigzKQ0KDQoNCg0KYGBgDQoNCg0K